﻿Imports Tom0014TableAdapters
Imports Tom0014
Imports utileria
Partial Class Registro_nuevo
    Inherits System.Web.UI.Page
    Dim utils As New utileria
    Const sNoRegistrado As String = "NO REGISTRADO"
    Const sNoAsignado As String = "--------------"
    Const sPageDetalles As String = "general.aspx?animal="


    Protected Sub Registro_nuevo_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        If Not IsPostBack Then
            utils.fillcatalogo()
            ddlHierro = utils.fillcatalogo(ddlHierro, "H")
            ddlPropiedad = utils.fillcatalogo(ddlPropiedad, "P")
            ddlPeleaje1 = utils.fillcatalogo(ddlPeleaje1, "W")
            ddlPeleaje2 = utils.fillcatalogo(ddlPeleaje2, "X")
            ddlUbicacion = utils.fillcatalogo(ddlUbicacion, "U")
            ddlEncaste = utils.fillcatalogo(ddlEncaste, "E")
            ddlHierro.Focus()
        End If
    End Sub

    ' Buscar madre y abuelo materno
    Protected Sub Madre_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNoMadre.TextChanged, txtLtraMadre.TextChanged, txtAnoMadre.TextChanged
        Dim caja As TextBox = sender
        If IsNumeric(txtNoMadre.Text) And txtLtraMadre.Text.Length > 0 And IsNumeric(txtAnoMadre.Text) And txtAnoMadre.Text.Length = 4 Then
            Dim sSexo, sLetra As String
            Dim iNumero, iAno As Integer
            ' Recibir las variables
            sSexo = "V"
            iNumero = CType(txtNoMadre.Text, Integer)
            sLetra = txtLtraMadre.Text
            iAno = CType(txtAnoMadre.Text, Integer)
            ' Conectarse a la base de datos para consultar
            Dim Animal As New animalTableAdapter
            Dim myAnimal, abuelo As New animalDataTable

            myAnimal = Animal.GetAnimalBySNLA(sSexo, iNumero, sLetra, iAno)
            If myAnimal.Count > 0 Then ' Si el Madre esta registrado lo asigno a los controles
                hfId_Madre.Value = myAnimal(0).AnimalId.ToString
                hfHie_Madre.Value = myAnimal(0).hierro
                'Si en la base de datos no hay nombre registrado, le avisamos al usuario
                ' que no tiene nombre asignado
                If myAnimal(0).IsnombreNull Or myAnimal(0).nombre = "" Then
                    txtNombreMadre.Text = sNoAsignado
                Else
                    txtNombreMadre.Text = myAnimal(0).nombre.ToString
                    txtNombre.Text = myAnimal(0).nombre.Remove(myAnimal(0).nombre.Length - 1, 1)
                End If
                If myAnimal(0).Istienta_acNull Then
                    txtTientaACMadre.Text = ""
                Else
                    txtTientaACMadre.Text = myAnimal(0).tienta_ac.ToString
                End If
                If myAnimal(0).Istienta_apNull Then
                    txtTientaAPMadre.Text = ""
                Else
                    txtTientaAPMadre.Text = myAnimal(0).tienta_ap.ToString
                End If
                If myAnimal(0).Isporcien_csNull Then
                    txtPorcienCSMadre.Text = ""
                Else
                    txtPorcienCSMadre.Text = myAnimal(0).porcien_cs.ToString
                End If
                If Not (myAnimal(0).Isno_padreNull() And myAnimal(0).Isltra_padreNull() And myAnimal(0).Isano_padreNull()) Then
                    txtAbuelo.Text = myAnimal(0).no_padre.ToString & myAnimal(0).ltra_padre & myAnimal(0).ano_padre
                    abuelo = Animal.GetAnimalBySNLA("T", myAnimal(0).no_padre, myAnimal(0).ltra_padre, myAnimal(0).ano_padre)
                    If abuelo.Count > 0 Then
                        If abuelo(0).IsnombreNull Then
                            txtNombreAbuelo.Text = sNoAsignado
                        Else
                            txtNombreAbuelo.Text = abuelo(0).nombre
                        End If
                        If abuelo(0).Istienta_acNull Then
                            txtTientaACAbuelo.Text = ""
                        Else
                            txtTientaACAbuelo.Text = abuelo(0).tienta_ac
                        End If
                        If abuelo(0).Istienta_apNull Then
                            txtTientaAPAbuelo.Text = ""
                        Else
                            txtTientaAPAbuelo.Text = abuelo(0).tienta_ap
                        End If
                    Else
                        txtNombreAbuelo.Text = sNoRegistrado
                        txtTientaACAbuelo.Text = ""
                        txtTientaAPAbuelo.Text = ""
                    End If
                Else
                    txtNombreAbuelo.Text = sNoRegistrado
                    txtTientaACAbuelo.Text = ""
                    txtTientaAPAbuelo.Text = ""
                End If


                If caja.ID = "txtNoMadre" Then
                    txtLtraMadre.Focus()
                ElseIf caja.ID = "txtLtraMadre" Then
                    txtAnoMadre.Focus()
                ElseIf caja.ID = "txtAnoMadre" Then
                    txtNombre.Focus()
                End If
            Else
                txtNombreMadre.Text = sNoRegistrado
                hfId_Madre.Value = 0
                hfHie_Madre.Value = "-"
                txtTientaACMadre.Text = ""
                txtTientaAPMadre.Text = ""
                txtPorcienCSMadre.Text = ""
                txtAbuelo.Text = ""
                txtNombreAbuelo.Text = sNoRegistrado
                txtTientaACAbuelo.Text = ""
                txtTientaAPAbuelo.Text = ""
                If caja.ID = "txtNoMadre" Then
                    txtLtraMadre.Focus()
                ElseIf caja.ID = "txtLtraMadre" Then
                    txtAnoMadre.Focus()
                ElseIf caja.ID = "txtAnoMadre" Then
                    txtNombre.Focus()
                End If
            End If
        Else
            If caja.ID = "txtNoMadre" Then
                txtLtraMadre.Focus()
            ElseIf caja.ID = "txtLtraMadre" Then
                txtAnoMadre.Focus()
            ElseIf caja.ID = "txtAnoMadre" Then
                txtNombre.Focus()
            End If
        End If
    End Sub
    ' Buscar el registro del padre
    Protected Sub Padre_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNoPadre.TextChanged, txtLtraPadre.TextChanged, txtAnoPadre.TextChanged
        Dim caja As TextBox = sender
        If IsNumeric(txtNoPadre.Text) And txtLtraPadre.Text.Length > 0 And IsNumeric(txtAnoPadre.Text) And txtAnoPadre.Text.Length = 4 Then
            Dim sSexo, sLetra As String
            Dim iNumero, iAno As Integer
            ' Recibir las variables
            sSexo = "T"
            iNumero = CType(txtNoPadre.Text, Integer)
            sLetra = txtLtraPadre.Text
            iAno = CType(txtAnoPadre.Text, Integer)
            ' Conectarse a la base de datos para consultar
            Dim Animal As New animalTableAdapter
            Dim myAnimal As New animalDataTable

            myAnimal = Animal.GetAnimalBySNLA(sSexo, iNumero, sLetra, iAno)
            If myAnimal.Count > 0 Then ' Si el padre esta registrado lo asigno a los controles
                hfId_Padre.Value = myAnimal(0).AnimalId.ToString
                hfHie_Padre.Value = myAnimal(0).hierro
                ' Si en la base de datos no hay nombre registrado, le avisamos al usuario
                ' que no tiene nombre asignado
                If myAnimal(0).IsnombreNull Or myAnimal(0).nombre = "" Then
                    txtNombrePadre.Text = sNoAsignado
                Else
                    txtNombrePadre.Text = myAnimal(0).nombre.ToString
                End If
                If myAnimal(0).Istienta_acNull Then
                    txtTientaACPadre.Text = ""
                Else
                    txtTientaACPadre.Text = myAnimal(0).tienta_ac.ToString
                End If
                If myAnimal(0).Istienta_apNull Then
                    txtTientaAPPadre.Text = ""
                Else
                    txtTientaAPPadre.Text = myAnimal(0).tienta_ap.ToString
                End If
                If myAnimal(0).Isporcien_csNull Then
                    txtPorcienCSPadre.Text = ""
                Else
                    txtPorcienCSPadre.Text = myAnimal(0).porcien_cs.ToString
                End If
                If caja.ID = "txtNoPadre" Then
                    txtLtraPadre.Focus()
                ElseIf caja.ID = "txtLtraPadre" Then
                    txtAnoPadre.Focus()
                ElseIf caja.ID = "txtAnoPadre" Then
                    ddlPropiedad.Focus()
                End If
            Else
                txtNombrePadre.Text = sNoRegistrado
                hfId_Padre.Value = 0
                hfHie_Padre.Value = "-"
                txtTientaACPadre.Text = ""
                txtTientaAPPadre.Text = ""
                txtPorcienCSPadre.Text = ""
                If caja.ID = "txtNoPadre" Then
                    txtLtraPadre.Focus()
                ElseIf caja.ID = "txtLtraPadre" Then
                    txtAnoPadre.Focus()
                ElseIf caja.ID = "txtAnoPadre" Then
                    ddlPropiedad.Focus()
                End If
            End If
        Else
            If caja.ID = "txtNoPadre" Then
                txtLtraPadre.Focus()
            ElseIf caja.ID = "txtLtraPadre" Then
                txtAnoPadre.Focus()
            ElseIf caja.ID = "txtAnoPadre" Then
                ddlPropiedad.Focus()
            End If
        End If
    End Sub
    ' Grabar a la base de datos
    Protected Sub btnAgregar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAgregar.Click
        If Page.IsValid Then
            Dim registro As New NuevoRegistroTableAdapter
            Dim sHierro, sSexo, sLetra, sNombre, sPropiedad, sLtra_Padre, _
                sHie_Padre, sLtra_Madre, sHie_Madre, sAbueloMat, sPelaje1, _
                sPelaje2, sUbicacion, sEncaste As String
            Dim fFechaNac, fFechaBaja As Nullable(Of Date)
            Dim iNumero, iAno, iNo_Padre, iAno_Padre, iId_Padre, iNo_Madre, iId_Madre, iAno_Madre As Integer


            ' ***** Obtener el valor de los controles ****
            sHierro = ddlHierro.SelectedValue.ToUpper
            sSexo = ddlSexo.SelectedValue.ToUpper
            fFechaNac = CDate(txtFechaNac.Text)
            iNumero = CInt(txtNumero.Text)
            sLetra = txtLetra.Text.ToUpper
            iAno = CInt(txtAno.Text)
            sNombre = txtNombre.Text.ToUpper
            sPropiedad = ddlPropiedad.SelectedValue.ToUpper
            ' --- PADRE ---
            Try
                iNo_Padre = CInt(txtNoPadre.Text)
            Catch ex As Exception
                iNo_Padre = 0
            End Try
            sLtra_Padre = txtLtraPadre.Text.ToUpper
            Try
                iAno_Padre = CInt(txtAnoPadre.Text)
            Catch ex As Exception
                iAno_Padre = 0
            End Try
            iId_Padre = hfId_Padre.Value
            sHie_Padre = hfHie_Padre.Value
            ' --- MADRE ---
            Try
                iNo_Madre = CInt(txtNoMadre.Text)
            Catch ex As Exception
                iNo_Madre = 0
            End Try
            sLtra_Madre = txtLtraMadre.Text.ToUpper
            Try
                iAno_Madre = CInt(txtAnoMadre.Text)
            Catch ex As Exception
                iAno_Madre = 0
            End Try
            iId_Madre = hfId_Madre.Value
            sHie_Madre = hfHie_Madre.Value
            sAbueloMat = txtAbuelo.Text
            If Not (txtBaja.Text = "") Then fFechaBaja = CType(txtBaja.Text, Date)
            sPelaje1 = ddlPeleaje1.SelectedValue
            sPelaje2 = ddlPeleaje2.SelectedValue
            sUbicacion = ddlUbicacion.SelectedValue
            sEncaste = ddlEncaste.SelectedValue


            ' ***** VALIDACIONES PERSONALZADAS ********
            ' TODO: Trabajar sobre el tema de validaciones personalizadas
            ' VALIDA: Animal unico
            Dim padre, madre, animal As New animalDataTable
            Dim adapterAnimal As New animalTableAdapter
            Dim sError As String = ""
            ' Correspondencia del año de nacimiento
            If Year(fFechaNac) <> iAno Then
                sError &= "El campo fecha no corresponde a la fecha de nacimiento<br>"
            End If

            animal = adapterAnimal.GetAnimalBySNLAH(sSexo, iNumero, sLetra, iAno, sHierro)
            If animal.Count > 0 Then
                sError &= "El animal(" & _
                                     "<a href='general.aspx?animal=" & animal(0).AnimalId.ToString & "&opt=1&modulo=1'>" & _
                                     sSexo & iNumero.ToString & sLetra & iAno.ToString & "-" & sHierro & _
                                     "</a>) que intenta ingresar ya esta registrado. Revise la información ingresada."
            End If

            If iId_Padre = 0 Then
                padre = adapterAnimal.GetAnimalBySNLA("T", iNo_Padre, sLtra_Padre, iAno_Padre)
            Else
                padre = adapterAnimal.GetAnimalById(iId_Padre)
            End If


            If padre.Count > 0 Then

            End If

            If Len(sError) > 0 Then
                panel.CssClass = "error"
                litError.Text = sError
                Exit Sub
            End If
            ' Insertar a la base de datos
            Dim iIdNuevo As New Integer
            Dim usuario = Membership.GetUser()

            Try
                iIdNuevo = registro.NuevoAnimal(sSexo, iNumero, sLetra, iAno, sNombre, fFechaNac, sHierro, sPropiedad, _
                                               iNo_Padre, sLtra_Padre, iAno_Padre, sHie_Padre, iId_Padre, iNo_Madre, _
                                               sLtra_Madre, iAno_Madre, sHie_Madre, iId_Madre, sAbueloMat, fFechaBaja, _
                                               sPelaje1, sPelaje2, sUbicacion, sEncaste, usuario.ProviderUserKey)
            Catch ex As Exception
                sError &= ex.Message
                panel.CssClass = "error"
                litError.Text = sError
                Exit Sub
            End Try

            Response.Redirect(sPageDetalles & iIdNuevo.ToString)

        End If

    End Sub
End Class
